home *** CD-ROM | disk | FTP | other *** search
/ Spanish Scene 1 / SpanishScene1.iso / spanish pack n°1 by llfb / revistas / fanzine / fanzine01.dms / fanzine01.adf / 37 < prev    next >
Text File  |  1977-12-31  |  11KB  |  245 lines

  1.  
  2.   __________________________________________________________________________
  3.  ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
  4.   ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  5.            INICIACION A LA PROGRAMACION EN ENSAMBLADOR PARA EL AMIGA
  6.   __________________________________________________________________________
  7.  ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
  8.   ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  9.  
  10.   (c) Warlord
  11.  
  12.    Con este curso, pretendemos iniciar a todas aquellas personas que aún no
  13.   lo han hecho, en la programación del 68000. Para ello empezaremos, expli-
  14.   cando desde un nivel básico, todos los conceptos y comandos del 68000.
  15.  
  16.    Para no hacer este curso interminable no nos detendremos en temas tales
  17.   como la aritmética binaria,algebra de Boole o conceptos informáticos ele-
  18.   mentales:CPU,RAM,...,todos estos conceptos podéis hallarlos en cualquier
  19.   buen libro de informática general.
  20.  
  21.  
  22.   EL INTERIOR DEL AMIGA:
  23.   ---------------------
  24.  
  25.   CUSTOM CHIPS: Son los llamados Agnus,Denise y Paula.La principal tarea del
  26.   Agnus, (alias blitter)  es el movimiento  de areas de memoria, útiles para
  27.   tareas tales como cambios de pantallas. El Denise está relacionado con las
  28.   transferencias a pantalla y por último, el Paula se ocupa de tareas de en-
  29.   trada y salida.
  30.   
  31.   MEMORIA:La memoria RAM puede ser dividida en dos zonas:
  32.  
  33.   CHIP RAM:Es la memoria directamente accesible por los chips del Amiga.Suele
  34.   ser un banco  de 512k (aunque con  ligeros cambios, el 1.3  puede  soportar
  35.   hasta 1 Mg,y el 2.0 ya soporta hasta 2 Mgs). Su situación es desde la posi-
  36.   ción $000000 hasta la $07FFFF (o bien 0 a 524287,pues 512x1024=524287 bytes)
  37.  
  38.   FAST RAM:El resto de la memoria. Comienza en la $200000.
  39.   
  40.    Este es el esquema de la memoria del amiga:
  41.  
  42.   $000000 - $07FFFF  Chip ram
  43.   $080000 - $1FFFFF  Reservada
  44.   $200000 - $9FFFFF  Fast Ram
  45.   $A00000 - $BEFFFF  Reservada
  46.   $BFD000 - $BFDF00  PIA B (direcciones pares)
  47.   $BFE001 - $BFEF00  PIA C (direcciones impares)
  48.   $C00000 - $CFEFFF  Reservada para expansiones
  49.   $DFF000 - $DFFFFF  Registros de los Custom Chips
  50.   $E00000 - $E7FFFF  Reservada
  51.   $E80000 - $EFFFFF  Puertos de expansión
  52.   $F00000 - $F7FFFF  Reservada
  53.   $F80000 - $FFFFFF  Rom
  54.  
  55.   REGISTROS:
  56.  
  57.    ¿Que es un registro?: Digamos que un registro es una pequeña porción de
  58.   memoria en la  que podéis ir metiendo y sacando  datos instantáneamente.
  59.   Generalmente estas zonas son de 32 bits,aunque como veremos hay alguno de
  60.   16.
  61.  
  62.   -Registros de Datos:Hay 8,denotados por d0,d1,...d7 (32 bits)
  63.   -Registros de direcciones:otros 8:a0,....a7 (32 bits)
  64.   -Punteros de pila:Hay dos:USP (puntero de pila del usuario) y el SSP (punte-
  65.   ro de pila del supervisor). Puesto que en cada instante sólo uno de ellos 
  66.   está activo ,a ambos se  les denota  por A7, pero recuerda  que  hay  dos
  67.   punteros distintos aunque compartan la misma dirección.Es un registro de 32
  68.   bits
  69.   -Contador del programa,PC,de 32 bits. Guarda la posición de memoria en la
  70.   que el programa se encuentra ejecutándose.
  71.   -Registro de estado:Es importantísimo,y aparecerá numerosas veces a lo
  72.   largo de este curso.Es de 16 bits.El byte inferior (bits 0-7) guardan el
  73.   CCR,y el superior el llamado byte del sistema.
  74.    El CCR dispone de 5 indicadores:
  75.  
  76.    BIT:           7    6    5    4    3    2    1    0
  77.                  -------------------------------------
  78.    INDICADOR:                    X    N    Z    V    C
  79.  
  80.    C:Bit de acarreo.En ocasiones al hacer alguna operación,nos quedan cortos
  81.   los 32 bits.Por ejemplo 2 elevado a 32 sería 1 uno seguido de 32 ceros,por
  82.   lo que necesitaríamos 33 bits para guardarlo,pues en uno de 32 bits,serían
  83.   todos ceros.Para ellos contamos con este bit de acarreo que podemos
  84.   utilizar eventualmente para hacer operaciones de 33 bits.
  85.   
  86.   X:Bit de extensión.Disponemos de 8 registros de datos,pero sólo 1 de aca-
  87.   rreo.A veces nos haría falta utilizar varios bits de acarreos.Esto no es
  88.   posible,sin embargo en este caso el bit de extensión nos puede ayudar.Este
  89.   bit X es una especie de memoria del C.Hay muchas operaciones durante las
  90.   cuales el bit C se pierde,esto no ocurre así con el X.
  91.  
  92.   N:Bit de signo.Es 0 para los positivos y uno para los negativos.Recordemos
  93.   que los números negativos tienen su bit 31 con un 1,mientras los positivos
  94.   tienen un cero.
  95.  
  96.   Z:Se pondrá a uno si el resultado de la última operación ha sido cero,o en
  97.   caso contrario se pondrá a uno.
  98.  
  99.   V:Rebose.Sirve para evitar errores en la aritmética con signo.En la aritmé-
  100.   tica con signo, los números tienen un rango menor,que la de sin signo. Sin
  101.   querer podemos cometer un error. Por ejemplo,con 4 bits,el rango sería de
  102.   0-15 para la aritmética sin signo y de -7 a +8 para la de con signo. En es-
  103.   te último caso,no podríamos sumar +9 + (-3) pues +4 cae fuera de la aritmé-
  104.   tica con signo.Sin embargo, la operación ha sido completamente legal, (para 
  105.   la aritmética sin signo) por lo que el bit C de acarreo no nos ha advertido
  106.   del error. Por lo tanto, si el indicador V ha sido puesto a una tras alguna
  107.   operación, significará que en la aritmética con signo ha habido un error.
  108.  
  109.   El byte del sistema. Recordemos  que es el byte más significativo del SR 
  110.   (bits del 8 al 15 del SR). En el se almacenan datos relativos al funciona-
  111.   miento general del sistema.Puede ser leído por el usuario,pero no alterado
  112.   por él.(a no ser que se encuentre en un modo especial llamado supervisor).
  113.  
  114.   Bits 9-10:Máscara de interrupciones:Fijan un nivel de prioridad (de 0-7)
  115.   para las interrupciones.
  116.  
  117.   Bit 13:Indicador del estado de supervisor. El amiga puede trabajar en dos
  118.   estados diferentes:Usuario y supervisor. SS=1 significa modo supervisor o
  119.   usuario en caso contrario. En modo supervisor se tiene acceso a todos los
  120.   recursos del sistema.Por ejemplo los sistemas operativos trabajan en modo
  121.   supervisor,los programas en modo usuario.Más adelante se comprenderá el
  122.   significado exacto de estos indicadores.
  123.  
  124.   Bit 15:Modo traza.(se explicará mas adelante).
  125.  
  126.   CODIGOS DE TAMAÑOS DE LOS DATOS:
  127.   -------------------------------
  128.  
  129.    De ahora en adelante,identificaremos por b a un byte (8 bits),w a un grupo
  130.   de 16 bits (palabra) y l a una doble palabra (32 bits).En adelante iremos
  131.   viendo instrucciones que operarán con datos de esta forma.La mayoría de
  132.   estas instrucciones pueden trabajar con los tres tipos de datos indistinta-
  133.   mente,por lo que sustituiremos las 3 por z.Así por ejemplo ADD.z significa
  134.   que está operando o con un byte,o con una palabra o con una doble palabra
  135.   indistintamente.
  136.  
  137.   DOBLE PALABRA:   31 ..... 23 ..... 15 ..... 7 .... 0   (.L)
  138.   (32 Bits)
  139.   
  140.   PALABRA:         15 ..... 7 .... 0  (.W)
  141.   (16 bits)
  142.  
  143.   BYTE:            7 .... 0  (.B)
  144.   (8 bits)
  145.  
  146.   DIRECCIONAMIENTO DE LA MEMORIA
  147.   ------------------------------
  148.  
  149.    ¿Cómo accede el procesador a la memoria y cómo podemos nosotros utilizar-
  150.   la?
  151.  
  152.    El acceso a la memoria se puede hacer de varios modos. Aquí nos detendre-
  153.   mos en el direccionamiento inmediato  y absoluto.
  154.  
  155.   Ej: La instrucción "move" significa mover. Si escribimos "move #2,d0
  156.   llevará 2 ($ -> en hexadecimal) al registro d0, con lo cual ahora d0=2
  157.  
  158.   Sin embargo, move #1, $1023 llevará 1 a la posición de memoria $1023
  159.   (hexad.). Vemos que ésta última forma, se caracteriza por llevar un
  160.   número (se representa #n) a una determinada dirección. Es el llamado
  161.   direccionamiento INMEDIATO, pues el número y la dirección están fijos.
  162.  
  163.    Otro modo de direccionamiento, es el ABSOLUTO. Veámoslo con un ejemplo:
  164.  
  165.   MOVE.L $1000,D3
  166.   ADD.L  $1004,D3
  167.   MOVE.L D3,$1008
  168.  
  169.    Aquí no trabajamos con números fijos, sino con registros y direcciones
  170.   fijas de memoria (pero no son fijos los contenidos de las direcciones)
  171.  
  172.    En la primera línea llevamos el contenido de la dirección 1000 al registro
  173.   D3.  Así si en la dirección mil había un 5, ahora D3=5
  174.   En la 2a línea añadimos (ADD) al registro D3, el contenido de la dirección
  175.   $1004. Es decir, si en $1004 había un 8, ahora D3=5+8=13
  176.   por último salvamos el contenido de D3 en la posición de memoria $1008. 
  177.   Ahora en $1008 hay un 13.
  178.  
  179.   Notas:
  180.  
  181.   - Como véis la diferencia fundamental es:
  182.  
  183.   MOVE.L $1000,D0 ;Direccionamiento Absoluto.Llevamos el contenido de la
  184.                    dirección $1000 al registro D3
  185.   MOVE.L #$1000,D0;Direccionamiento Directo. Llevamos el NUMERO (#) $1000 al
  186.                   ;registro D3. Ahora D3=$1000
  187.  
  188.   - Hemos utilizado .L , esto quiere decir que hemos tratado con Dobles pala
  189.   bras.(32 bits). Por eso hemos ido saltando las direcciones de 4 en 4:
  190.   $1000,$1004,$1008... (4x8=32 bits).
  191.  
  192.   - ¿Qué hubiera ocurrido si...
  193.  
  194.   MOVE.L $1000,D3
  195.   ADD.L  $1001,D3; ¡Cuidado!. De $1000 a $1001 hay un sólo bit, luego no
  196.   sería correcto.
  197.  
  198.   Esto nos lleva a una regla importante: Las direcciones utilizadas para pala-
  199.   bras y dobles palabras deben ser siempre pares.
  200.  
  201.   COMANDOS DEL 68000
  202.   ------------------
  203.  
  204. * MOVE.x : Ya lo hemos visto anteriormente. Significa "mover" un dato desde
  205.   el operando origen al operando destino:
  206.  
  207.   MOVE   #1,A0 ;Llevará 1 al registro A0. Luego ahora A0=1
  208.   MOVE.B $1000,A0 ; En esta ocasión llevamos el byte que se encuentra en la
  209.                     posición 1000 al registro A0
  210.   MOVE.L A0,D0 ;Lleva el contenido de los 4 bytes de A0 a D0.
  211.  
  212. * CLR.z <operando> : Viene del Inglés CLeaR (limpiar). Es decir, pone el
  213.   operando a cero. Algunos ejemplos:
  214.  
  215.   CLR.B A0;pone el byte más bajo de A0 completamente a cero
  216.   CLR.W A0;idem pero con los dos bytes más bajos
  217.   CLR.L A0;pone los 32 bits de A0 como 0.
  218.  
  219.   Es lógico que al utilizar esta instrucción, pone el indicador del CCR
  220.   correspondiente a Z (Zero) a 1.
  221.  
  222. * ADD : Significa añadir
  223.  
  224.    Es similar al MOVE, sólo que en esta ocasión suma el operando origen al
  225.   destino. Es decir:
  226.  
  227.   ADD.L D0,D1; Añade los 32 bits de D0 a D1. Si por ejemplo D1=1, D2=135,
  228.                ahora D1=136.
  229.  
  230.   NOTA: De los comandos MOVE y ADD hay muchas variantes:MOVEQ, ADDI,... pero
  231.   éstas se explicarán conforme vayan saliendo.
  232.  
  233. * ORG : Simplemente, indica al ensamblador que se desea que las líneas que
  234.   vienen a continuación sean ensambladas y cargadas a partir de una deter-
  235.   minada posición. Por ejemplo:
  236.  
  237.   ORG $7000 indica que ensamblaremos el programa y lo leeremos a partir de
  238.   la dirección $7000. Tened cuidado con utilizar direcciones absolutas. En
  239.   su momento se explicará por qué.
  240.  
  241.   - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  242.  
  243.    Por hoy, ya está bien. Perdón por los errores que pueda haber, que seguro
  244.   que los hay. Espero vuestras preguntas... ¡Hasta la próxima!
  245.